﻿/************************************************************************

   Extended Silverlight Toolkit

   Copyright (C) 2010-2012 Xceed Software Inc.

   This program is provided to you under the terms of the Microsoft Public
   License (Ms-PL) as published at http://extendedsilverlight.codeplex.com/license

   Please purchase a commercial version of this toolkit if you are using
   it in a commercial product. The commercial versions support the project,
   and also include more features for each control, priority support,
   source code, updates, removed watermark, and a proprietary license.

   Visit http://xceed.com and follow @datagrid on Twitter.

  **********************************************************************/

using System;
using System.Windows.Data;

namespace Xceed.Silverlight.ListBox.Converters
{
  public class RatioToOpacityConverter : IValueConverter
  {
    #region IValueConverter Members

    public object Convert( object value, Type targetType, object parameter, System.Globalization.CultureInfo culture )
    {
      double ratio = ( double )value;
      double angle = System.Convert.ToDouble( parameter );
      double angleRatio = angle / 360;

      double proximity = ( ( ratio > angleRatio ) ? ( ratio - angleRatio ) : ( ratio - angleRatio + 1 ) );

      if( proximity < m_decreaseCap )
      {
        return ( 1 - ( proximity / m_decreaseCap ) );
      }
      else if (proximity > m_increaseCap)
      {
        return ( ( proximity - m_increaseCap ) * 15 );
      }

      return 0;
    }

    public object ConvertBack( object value, Type targetType, object parameter, System.Globalization.CultureInfo culture )
    {
      throw new NotImplementedException();
    }

    #endregion

    #region Private Constants

    private const double m_decreaseCap = 10d / 15d;
    private const double m_increaseCap = 14d / 15d;

    #endregion
  }
}
